home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet multimedia / Muzyka / Edytory sampli (probek dzwieku) / ZynAddSubFX_2.2.0 / Setup_ZynAddSubFX-2.2.0.exe / source code / Misc / Bank.h < prev    next >
C/C++ Source or Header  |  2005-03-14  |  3KB  |  101 lines

  1. /*
  2.   ZynAddSubFX - a software synthesizer
  3.  
  4.   Bank.C - Instrument Bank
  5.   Copyright (C) 2002-2005 Nasca Octavian Paul
  6.   Author: Nasca Octavian Paul
  7.  
  8.   This program is free software; you can redistribute it and/or modify
  9.   it under the terms of version 2 of the GNU General Public License 
  10.   as published by the Free Software Foundation.
  11.  
  12.   This program is distributed in the hope that it will be useful,
  13.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.   GNU General Public License (version 2) for more details.
  16.  
  17.   You should have received a copy of the GNU General Public License (version 2)
  18.   along with this program; if not, write to the Free Software Foundation,
  19.   Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  20.  
  21. */
  22.  
  23. #ifndef BANK_H
  24. #define BANK_H
  25.  
  26. #include "../globals.h"
  27. #include "XMLwrapper.h"
  28. #include "Part.h"
  29.  
  30. #define BANK_SIZE 160
  31.  
  32. /*
  33.  * The max. number of banks that are used
  34.  */
  35. #define MAX_NUM_BANKS 400
  36.  
  37.  
  38. class Bank{
  39.     public:
  40.     Bank();
  41.     ~Bank();
  42.     char *getname(unsigned int ninstrument);
  43.     char *getnamenumbered(unsigned int ninstrument);
  44.     void setname(unsigned int ninstrument,const char *newname,int newslot);//if newslot==-1 then this is ignored, else it will be put on that slot
  45.     bool isPADsynth_used(unsigned int ninstrument);
  46.     
  47.     //returns 0 if the slot is not empty or 1 if the slot is empty
  48.     int emptyslot(unsigned int ninstrument);
  49.  
  50.     void clearslot(unsigned int ninstrument);
  51.     void savetoslot(unsigned int ninstrument,Part *part);
  52.     void loadfromslot(unsigned int ninstrument,Part *part);
  53.  
  54.     void swapslot(unsigned int n1,unsigned int n2);
  55.  
  56.     int loadbank(const char *bankdirname);
  57.     int newbank(const char *newbankdirname);
  58.     
  59.     char *bankfiletitle; //this is shown on the UI of the bank (the title of the window)
  60.     int locked();
  61.     
  62.     void rescanforbanks();
  63.     
  64.     struct bankstruct{
  65.         char *dir;
  66.         char *name;
  67.     };
  68.     
  69.     bankstruct banks[MAX_NUM_BANKS];
  70.     
  71.     private:
  72.     
  73.     //it adds a filename to the bank
  74.     //if pos is -1 it try to find a position
  75.     //returns -1 if the bank is full, or 0 if the instrument was added
  76.     int addtobank(int pos,const char* filename,const char* name);
  77.     
  78.     void deletefrombank(int pos);
  79.     
  80.     void clearbank();
  81.     
  82.     char defaultinsname[PART_MAX_NAME_LEN];
  83.     char tmpinsname[BANK_SIZE][PART_MAX_NAME_LEN+20];//this keeps the numbered names
  84.     
  85.     struct ins_t{
  86.         bool used;
  87.         char name[PART_MAX_NAME_LEN+1];
  88.         char *filename;
  89.         struct{
  90.         bool PADsynth_used;
  91.         } info;
  92.     }ins[BANK_SIZE];
  93.     
  94.     char *dirname;
  95.  
  96.     void scanrootdir(char *rootdir);//scans a root dir for banks    
  97. };
  98.  
  99. #endif
  100.  
  101.